#pragma  once
#include "WinMsg.h"
class Frame;
namespace App{
	extern WithProperties properties;

	void SetProperty(wstring propertyName, boost::any value);
	template<typename T>
	T GetProperty(wstring propertyName, T defaultValue = T()){
		return properties.GetProperty<T>(propertyName, defaultValue);
	}
	void Init(HINSTANCE hInstance, LPTSTR lpCmdLine, int nCmdShow);
	Frame* GetMainFrame();
	//Editor* GetEditor();
	//OutputWnd* GetOutputWnd();
	//OutLineWnd* GetOutLineWnd();
	int MainLoop();
	void Exit(int code = 0);
	MSGPROC(OnFrameDestroy);
};
